package com.open.party.cloud.model.data;

import cn.android.x.model.AppVersionEntity;
import cn.android.x.model.LeaderUserBean;
import cn.android.x.model.data.AppPageData;
import cn.android.x.model.data.PageReq;
import cn.android.x.model.data.ResultInfo;

import com.google.gson.JsonObject;
import com.open.party.cloud.model.ArticleEntity;
import com.open.party.cloud.model.ArticleVo;
import com.open.party.cloud.model.AttendanceEntity;
import com.open.party.cloud.model.AttendanceVO;
import com.open.party.cloud.model.BizGuideBean;
import com.open.party.cloud.model.CommVo;
import com.open.party.cloud.model.CourseTeacherEntity;
import com.open.party.cloud.model.ExamineAttendanceCourseEntity;
import com.open.party.cloud.model.ExamineClassCourseEntity;
import com.open.party.cloud.model.ExamineClassEntity;
import com.open.party.cloud.model.ExamineClassJoinVO;
import com.open.party.cloud.model.ExamineClassMemberCheckVo;
import com.open.party.cloud.model.ExamineClassMemberEntity;
import com.open.party.cloud.model.ExamineClassVO;
import com.open.party.cloud.model.ExamineGanBuRegisterVO;
import com.open.party.cloud.model.FreePhotosBean;
import com.open.party.cloud.model.FreePhotosVo;
import com.open.party.cloud.model.PartyLifeBean;
import com.open.party.cloud.model.PartyLifeVo;
import com.open.party.cloud.model.PartyTaskVo;
import com.open.party.cloud.model.SchoolBxEval;
import com.open.party.cloud.model.SchoolXmEval;
import com.open.party.cloud.model.TeacherRankEntity;
import com.open.party.cloud.model.TeacherRankVO;
import com.open.party.cloud.model.TownshipBean;
import com.open.party.cloud.model.DiaoChaWenJuanBean;
import com.open.party.cloud.model.DiaoChaWenJuanListBean;
import com.open.party.cloud.model.DiaoChaWenJuanSubmitBean;
import com.open.party.cloud.model.DiaoChaWenJuanVo;
import com.open.party.cloud.model.ExamineBean;
import com.open.party.cloud.model.ExamineSignBean;
import com.open.party.cloud.model.ExamineSubmitVo;
import com.open.party.cloud.model.ExamineVo;
import com.open.party.cloud.model.FileEntity;
import com.open.party.cloud.model.JiFenBean;
import com.open.party.cloud.model.JuBaoBean;
import com.open.party.cloud.model.JuBaoChaXunBean;
import com.open.party.cloud.model.JuBaoVo;
import com.open.party.cloud.model.MineCountBean;
import com.open.party.cloud.model.MsgEntity;
import com.open.party.cloud.model.MsgVo;
import com.open.party.cloud.model.PartyDevFileBean;
import com.open.party.cloud.model.PartyDevVo;
import com.open.party.cloud.model.QueryFileEntity;
import com.open.party.cloud.model.StudyRecordBean;
import com.open.party.cloud.model.StudyRecordVo;
import com.open.party.cloud.model.TaskBean;
import com.open.party.cloud.model.TimeBean;
import com.open.party.cloud.model.OrgDeptBean;
import com.open.party.cloud.model.OrgEmpBean;
import com.open.party.cloud.model.PartyDevBean;
import com.open.party.cloud.model.PartyMemberBean;
import com.open.party.cloud.model.PartyMemberVo;
import com.open.party.cloud.model.PartyOrgBean;
import com.open.party.cloud.model.PartyOrgVo;
import com.open.party.cloud.model.PeiXunKaoShiInfoBean;
import com.open.party.cloud.model.SuggestionBean;
import com.open.party.cloud.model.SuggestionVo;
import com.open.party.cloud.model.TouPiaoGuanBean;
import com.open.party.cloud.model.TouPiaoGuanLiSaveVO;
import com.open.party.cloud.model.TouPiaoGuanVo;
import com.open.party.cloud.model.TownshipVo;
import com.open.party.cloud.model.UserEntity;
import com.open.party.cloud.model.UserVo;
import com.open.party.cloud.model.VolunteerMemberEntity;
import com.open.party.cloud.model.VolunteerVo;
import com.open.party.cloud.model.YunKeBean;
import com.open.party.cloud.model.YunKePlayBean;
import com.open.party.cloud.model.YunKeRecordBean;
import com.open.party.cloud.model.YunKeVo;
import com.open.party.cloud.model.ZyzHuoDongBMEntity;
import com.open.party.cloud.model.ZyzHuoDongEntity;
import com.open.party.cloud.model.ZyzHuoDongVo;
import com.open.party.cloud.model.ZyzJiFenBean;
import com.open.party.cloud.model.ZyzKaoQingBean;
import com.open.party.cloud.model.ZyzTuanDuiEntity;
import com.open.party.cloud.model.ZyzTuanDuiVo;
import com.open.party.cloud.model.task.TaskDetailEntity;
import com.open.party.cloud.model.task.TaskRateEntity;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.Streaming;
import retrofit2.http.Url;
import rx.Observable;

public interface Api {

    // 版本检测
    @GET("clientVersion/getLatest")
    Observable<ResultInfo<AppVersionEntity>> getAppInfoForLastVersion();

    /**
     * 上传附件
     *
     * @param bizId
     * @param bizType
     * @param file
     * @return
     */
    @Multipart
    @POST("attachment/upload")
    Observable<ResultInfo<FileEntity>> uploadFile(@Query("bizId") String bizId, @Query("bizType") String bizType, @Query("id") String id, @Part MultipartBody.Part file);

    /**
     * 删除文件
     *
     * @param ids
     * @return
     */
    @DELETE("attachment")
    Observable<ResultInfo<Boolean>> delFileById(@Query("ids[]") String[] ids);

    @GET("api/authority/attachment")
    Observable<ResultInfo<ArrayList<QueryFileEntity>>> queryFile(@Query("bizIds") String[] bizIds, @Query("bizTypes") String[] bizTypes);

    // 更新用户头像
    @GET("emp/updatePhoto ")
    Observable<ResultInfo<String>> updateUserPhoto(@Query("filePath") String filePath);

    // 用户》更新Token
//    @GET("emp/userInfo")
//    Observable<ResultInfo<UserEntity>> updateToken();
    @GET("login/appLogin")
    Observable<ResultInfo<UserEntity>> updateToken(@Query("phone") String phone, @Query("password") String password);

    /**
     * 登录
     *
     * @param phone
     * @param password
     * @return
     */
    @GET("login/appLogin")
    Observable<ResultInfo<UserEntity>> login(@Query("phone") String phone, @Query("password") String password);

    // 注册用户
    @POST("login/websitRegister")
    Observable<ResultInfo<String>> doRegister(@Body UserVo userVo);

    // 修改密码
    @POST("emp/updatePassword")
    Observable<ResultInfo<String>> updatePassword(@Body UserVo userVo);

    // 文章 》 文章列表>>
    @POST("post/getMoreNewsList")
    Observable<ResultInfo<AppPageData<ArticleEntity>>> getArticleListData(@Body PageReq<ArticleVo> pageReq);

    @GET("post/getWzPostDetailById")
    Observable<ResultInfo<ArticleEntity>> getArticleDetail(@Query("id") String id);

    // 人才工作 》专家列表
    @GET("leaderInfo/getLeaderList")
    Observable<ResultInfo<ArrayList<LeaderUserBean>>> getRenCaiLeaderListData(@Query("busType") String busType);

    // 云课堂 》 课程列表>>
    @POST("learningMaterialsManagement/getWLearningList")
    Observable<ResultInfo<AppPageData<YunKeBean>>> getYunkePageData(@Body PageReq<YunKeVo> pageReq);

    // 云课堂 》 课程列表>> 我的
    @POST("learningRecord/pageAppMyRecord")
    Observable<ResultInfo<AppPageData<YunKeRecordBean>>> getMyYunkePageData(@Body PageReq<YunKeVo> pageReq);

    // 云课堂 》 课程播放列表>>
    @GET("coursewareManagement/getWzCoursewareListByLmmId")
    Observable<ResultInfo<ArrayList<YunKePlayBean>>> getYunkePlayListData(@Query("LmmId") String LmmId);

    // 党员干部教育 》 考试试题详情>>
    @GET("examinationTest/getExaminationTest")
    Observable<ResultInfo<PeiXunKaoShiInfoBean>> getPeiXunKaoShiDetail(@Query("id") String id);

    // 党务秘书》意见建议》新增
    @POST("suggestions")
    Observable<ResultInfo<SuggestionBean>> submitSuggestion(@Body SuggestionVo vo);

    // 1280举报》反馈查询
    @POST("report/getReplyByCode")
    Observable<ResultInfo<JuBaoChaXunBean>> getReplyByCode(@Query("code") String code);

    // 党务秘书 》 投票管理列表>>
    @POST("voting/page")
    Observable<ResultInfo<AppPageData<TouPiaoGuanBean>>> getTouPiaoGuanListData(@Body PageReq<TouPiaoGuanVo> pageReq);

    // 党务秘书 》 投票详情>>
    @GET("voting/details")
    Observable<ResultInfo<TouPiaoGuanBean>> getTouPiaoGuanDetail(@Query("id") String id);

    // 党务秘书 》 投票保存>>
    @POST("voting/insertVotingAnswer")
    Observable<ResultInfo<Boolean>> saveTouPiaoGuanLiResult(@Body TouPiaoGuanLiSaveVO saveVo);

    // 党务秘书 》 问卷列表>>
    @POST("questionnaire/availablePage")
    Observable<ResultInfo<AppPageData<DiaoChaWenJuanListBean>>> getDiaoChaWenJuanListData(@Body PageReq<DiaoChaWenJuanVo> pageReq);

    // 党务秘书 》 问卷详情>>
    @GET("questionnaire/get")
    Observable<ResultInfo<DiaoChaWenJuanBean>> getDiaoChaWenJuanDetail(@Query("id") String id);

    // 党务秘书 》 问卷提交>>
    @POST("questionnaire/insertAnswer")
    Observable<ResultInfo<Boolean>> submitDiaoChaWenJuanResultSet(@Body DiaoChaWenJuanSubmitBean vo);

    // 党员教育 》 考试列表>> examinationTest/getWzExaminationList
    @POST("examinationTest/pageAppSignList")
    Observable<ResultInfo<AppPageData<ExamineBean>>> getPeiXunKaoShiListData(@Body PageReq<CommVo> pageReq);

    // 举报12380 》 提交>>
    @POST("report/save")
    Observable<ResultInfo<JuBaoBean>> putJuBaoInfo(@Body JuBaoVo vo);

    // 基层党建 》地图》村社区列表>>
    @GET("township/getTownMapList")
    Observable<ResultInfo<ArrayList<TownshipBean>>> getCommunityList(@Query("name") String name);

    // 基层党建 》Web》村社区列表>>
    @GET("township/getWzTownList")
    Observable<ResultInfo<ArrayList<TownshipBean>>> getTownWebList(@Query("name") String name);

    // 志愿者 》 主页活动简报（即是新闻文章接口）
    @POST("biz/post/appNewsMore")
    Observable<ResultInfo<AppPageData<ArticleEntity>>> getPartyServiceArticleList(@Body PageReq<ArticleVo> pageReq);

    // 党组织 》 组织列表
    @POST("partyOrg/getGroupOrglist")
    Observable<ResultInfo<ArrayList<PartyOrgBean>>> getPartyOrgList(@Body PageReq<PartyOrgVo> pageReq);

//    // 党组织 》 组织列表
//    @POST("partyOrg/list")
//    Observable<ResultInfo<ArrayList<PartyOrgBean>>> getPartyOrgList(@Body PageReq<PartyOrgVo> pageReq);

    // 党组织 》 组织成员列表
    @POST("partyMember/page")
    Observable<ResultInfo<AppPageData<PartyMemberBean>>> getPartyMemberListData(@Body PageReq<PartyMemberVo> pageReq);

    // 党组织 》 村社区列表
    @POST("department/pageBySelect")
    Observable<ResultInfo<AppPageData<OrgDeptBean>>> getOrgForCityCommListData(@Body PageReq<PartyOrgVo> pageReq);

    // 党组织 》 市委组织成部列表》成员列表
    @GET("emp/getUserList")
    Observable<ResultInfo<ArrayList<OrgEmpBean>>> getOrgForCityCommMemberListData(@Query("maindeptid") String maindeptid);

    // 基础党建 》 党员发展》步骤列表
    @POST("partyDevelop/detail")
    Observable<ResultInfo<HashMap<String, ArrayList<PartyDevBean>>>> getDangYuanFaZhanListData();

    // 党组织 》 党员发展》附件列表
    @POST("dyfzFile/page")
    Observable<ResultInfo<AppPageData<PartyDevFileBean>>> getDyfzFileListData(@Body PageReq<PartyDevVo> pageReq);

    // 消息 》 分页列表
    @POST("notice/pageAppNoticeList")
    Observable<ResultInfo<AppPageData<MsgEntity>>> getMsgPageListData(@Body PageReq<MsgVo> pageReq);

    // 消息 》 我的数据》分页列表
    @POST("notice/pageMyNoticeList")
    Observable<ResultInfo<AppPageData<MsgEntity>>> getMsgPageListForMeData(@Body PageReq<MsgVo> pageReq);

    // 公务员管理 》 业务指南
    @GET("bussGuide/pageBusNodeList")
    Observable<ResultInfo<ArrayList<BizGuideBean>>> getGongWuYuanGuanLiListData();

    //
//    @GET("authority/login/sendCode")
//    Observable<ResultInfo<String>> getPhoneCode(@Query("phone") String phone, @Query("busType") String busType);
//
//    @GET("authority/login/codeVerify")
//    Observable<ResultInfo<Boolean>> checkPhoneCode(@Query("phone") String phone, @Query("code") String code);
//
//    // 根据验证码修改手机号-公共
//    @GET("authority/emp/updatePhoneByCode")
//    Observable<ResultInfo<String>> changePhoneNum(@Query("newPhone") String phone, @Query("code") String code);
//
//    // 忘记密码重置
//    @GET("authority/login/appUpdatePwd")
//    Observable<ResultInfo<Boolean>> resetUserPassword(@Query("phone") String phone, @Query("newPassword") String newPassword, @Query("oldPassword") String oldPassword);
//
//    // 分享App>发送验证邀请码
//    @POST("authority/invite/integral")
//    Observable<ResultInfo<Boolean>> sendShareAppCode(@Body ShareAppBean vo);
//
//    // 用户》检查登录人后台信息和输入是否一致
//    @POST("authority/emp/checkInfo")
//    Observable<ResultInfo<Boolean>> checkUserInfo(@Body UserVo vo);
//
//    // 用户》更新Token
//    @GET("authority/emp/userInfo")
//    Observable<ResultInfo<UserEntity>> updateToken();
//
//    // 用户》签到
//    @POST("authority/integral/signIn")
//    Observable<ResultInfo<JiFenBean>> doSignIn();
//
//    // 用户》更新用户基本信息
//    @POST("authority/emp/updateFromApp")
//    Observable<ResultInfo<UserVo>> updateUserInfo(@Body UserVo vo);
//
//    /**
//     * 注册用户
//     *
//     * @param register
//     * @return
//     */
//    @POST("authority/login/appRegister")
//    Observable<ResultInfo<UserEntity>> doRegister(@Body UserVo register);
//
//    @POST("authority/emp/updatePassword")
//    Observable<ResultInfo<Boolean>> updatePassword(@Body UserVo userVo);
//
//    /**
//     * 新增反馈
//     *
//     * @param bean
//     * @return
//     */
//    @POST("biz/feedback")
//    Observable<ResultInfo<FeedbackEntity>> addFeedback(@Body FeedbackEntity bean);
//
//    /**
//     * 新闻  》 加载主页所有数据
//     *
//     * @param req
//     * @return
//     */
//    @POST("biz/post/appNews")
//    Observable<ResultInfo<MainPageAo>> loadMainData(@Body MainPageVo req);
//
//    @POST("biz/post/appNews")
//    Observable<ResultInfo<ZhenJieEntity>> loadZhenJieData(@Body MainPageVo req);
//
//    // 文章 》 文章评论列表
//    @POST("biz/reply/page")
//    Observable<ResultInfo<AppPageData<NewsCommentsBean>>> loadNewsCommentsList(@Body PageReq<NewsCommentsBean> pageReq);
//
//    // 文章  》 文章评论新增
//    @POST("biz/reply")
//    Observable<ResultInfo<NewsCommentsBean>> addNewsComment(@Body NewsCommentsBean req);
//
//    // 文章  》 文章评论》点赞
//    @POST("biz/postRecord")
//    Observable<ResultInfo<NewsRecordBean>> addCommentsLiked(@Body NewsRecordBean req);
//
//    @GET("biz/post/appNew/{id}")
//    Observable<ResultInfo<NewsBean>> loadNewsDetails(@Path("id") String id);
//
//    @POST("biz/post/appPostType")
//    Observable<ResultInfo<List<NewsTagEntity>>> loadNewsTagData(@Body MainPageVo req);
//
//    @POST("biz/post/appNewsMore")
//    Observable<ResultInfo<AppPageData<NewsBean>>> loadNewsData(@Body PageReq<MainPageVo> pageParam);
//

    //
//    // 三会一课列表
//    @POST("biz/meetingapp/page")
//    Observable<ResultInfo<AppPageData<ShykListEntity>>> loadShykList(@Body PageReq<ShykReq> pageParam);
//
//    // 三会一课详情
//    @GET("biz/meeting/{id}")
//    Observable<ResultInfo<ShykDetailEntity>> loadShykDetail(@Path("id") String id);
//
//    // 三会一课详情（请假，取消请假，签到）
//    @POST("biz/meeting/unite")
//    Observable<ResultInfo<Boolean>> shykDetailOperation(@Body ShykReq shykReq);
//
//    // 会议接受情况
//    @POST("biz/joinPerson/receivepage")
//    Observable<ResultInfo<AppPageData<PersonInfoEntity>>> loadMeetReceive(@Body PageReq<ShykReq> pageParam);
//
//    // 会议参加情况
//    @POST("biz/joinPerson/unite")
//    Observable<ResultInfo<AppPageData<PersonInfoEntity>>> loadJoinPerson(@Body PageReq<ShykReq> pageParam);
//
//    // 志愿者 》 主页活动简报（即是新闻文章接口）
//    @POST("biz/post/appNewsMore")
//    Observable<ResultInfo<AppPageData<NewsBean>>> getZiYuanZheMainData(@Body PageReq<NewsVo> pageReq);
//
    // 志愿者 》 团队列表
    @POST("volunteerOrg/pageAppOrgList")
    Observable<ResultInfo<AppPageData<ZyzTuanDuiEntity>>> getZyzTuanDuiListData(@Body PageReq<ZyzTuanDuiEntity> pageReq);

    // 志愿者 》 团队详情
    @GET("volunteerOrg/{id}")
    Observable<ResultInfo<ZyzTuanDuiEntity>> getZyzTuanDuiDetail(@Path("id") String id);

    // 志愿者 》 团队成员列表
    @POST("volunteerMember/page")
    Observable<ResultInfo<AppPageData<VolunteerMemberEntity>>> getZyzTuanDuiMemberListData(@Body PageReq<ZyzTuanDuiVo> pageReq);

    // 志愿者 》 登录用户的志愿者信息
    @GET("volunteerMember/getInfo")
    Observable<ResultInfo<VolunteerMemberEntity>> getZyzLoginUserInfo();

    // 志愿者 》 新增自愿者信息
    @POST("volunteerMember")
    Observable<ResultInfo<Boolean>> zyzAddUserInfo(@Body VolunteerMemberEntity bean);

    //
//    // 志愿者 》 修改自愿者信息
//    @PUT("biz/volunteerMember")
//    Observable<ResultInfo<Boolean>> zyzEditUserInfo(@Body VolunteerMemberEntity bean);
//
    // 志愿者 》 活动列表
    @POST("volunteerActivity/page")
    Observable<ResultInfo<AppPageData<ZyzHuoDongEntity>>> getHuoDongListData(@Body PageReq<VolunteerVo> pageReq);

    // 志愿者 》 我的活动列表
    @POST("volunteerActivity/myPage")
    Observable<ResultInfo<AppPageData<ZyzHuoDongEntity>>> getHuoDongForMeListData(@Body PageReq<VolunteerVo> pageReq);

    // 志愿者 》 活动》详情
    @GET("volunteerActivity/{id}")
    Observable<ResultInfo<ZyzHuoDongEntity>> getHuoDongDetail(@Path("id") String id);

    // 志愿者 》 活动》报名
    @POST("volunteerActivityEnroll")
    Observable<ResultInfo<ZyzHuoDongBMEntity>> huoDongSignUp(@Body ZyzHuoDongVo bean);

    // 志愿者 》 活动》签到
    @POST("volunteerActivitySign")
    Observable<ResultInfo<Boolean>> doActivitySignIn(@Body ZyzKaoQingBean bean);

    // 志愿者 》 活动》签到列表
    @POST("volunteerActivitySign/page")
    Observable<ResultInfo<AppPageData<ZyzKaoQingBean>>> getZyzQianDaoListData(@Body PageReq<ZyzKaoQingBean> pageReq);

    //
    // 志愿者 》 积分》积分列表
    @POST("volunteerRanking/page")
    Observable<ResultInfo<AppPageData<ZyzJiFenBean>>> getZyzJiFenOrderListData(@Body PageReq<ZyzJiFenBean> pageReq);

    // 志愿者 》 积分》积分单位
    @GET("volunteerRanking")
    Observable<ResultInfo<ArrayList<ZyzJiFenBean>>> getZyzJiFenStreetListData();

    // 志愿者 》 获取活动时间段
    @GET("volunteerActivityConfig/getActiveTimeList")
    Observable<ResultInfo<ArrayList<TimeBean>>> getTimeListData(@Query("activityId") String activityId);
//
//    // 志愿者 》 帮我 》 列表数据
//    @POST("biz/volunteerHelp/page")
//    Observable<ResultInfo<AppPageData<ZyzBangWoEntity>>> getBangWoListData(@Body PageReq<ZyzBangWoEntity> pageReq);
//
//    // 志愿者 》 帮我 》 新增
//    @POST("biz/volunteerHelp")
//    Observable<ResultInfo<ZyzBangWoEntity>> addBangWo(@Body ZyzBangWoEntity bean);
//
//    // 加载党组织列表
//    @POST("biz/partyOrg/list")
//    Observable<ResultInfo<List<DzzListEntity>>> loadDzzList(@Body PageReq<DzzReq> pageParam);
//
//    // 加载党组织详情
//    @GET("biz/partyOrg/getDetail")
//    Observable<ResultInfo<DzzDetailEntity>> loadDzzDetail(@Query("id") String id);
//
//    //  消息提醒列表
//    @POST("/biz/notice/page")
//    Observable<ResultInfo<AppPageData<MsgEntity>>> loadMsgList(@Body PageReq<MsgReq> pageParam);
//
//    // 消息提醒详情
//    @GET("/biz/notice/{id}")
//    Observable<ResultInfo<MsgEntity>> loadMsgDetail(@Path("id") String id);
//
//    // 我的 》 我的记录：收藏1；浏览2
//    @POST("biz/post/appPostRecord")
//    Observable<ResultInfo<AppPageData<NewsRecordBean>>> getMyRecordList(@Body PageReq<NewsRecordBean> pageReq);
//
//    // 我的 》 通知消息>列表
//    @POST("biz/notice/page")
//    Observable<ResultInfo<AppPageData<NoticeBean>>> getMyNoticeList(@Body PageReq<NoticeBean> pageReq);
//
//    // 我的 》 通知消息>修改状态
//    @POST("biz/notice/updateBatch")
//    Observable<ResultInfo<Boolean>> updateNoticeReadStatus(@Body NoticeBean vo);
//
//    // 我的 》 获取我的相关数据
//    @POST("biz/post/apMyCount")
//    Observable<ResultInfo<MyDataBean>> loadMyData();
//
//    // 积分红豆 》 列表
//    @POST("authority/integral/page")
//    Observable<ResultInfo<AppPageData<JiFenBean>>> getHongDouListData(@Body PageReq<JiFenBean> pageReq);
//
//    // 积分红豆 》 查询信息
//    @POST("authority/integral/myScore")
//    Observable<ResultInfo<Integer>> queryJiFenInfo(@Body JiFenVo pageReq);
//
//    // 积分红豆 》 兑换
//    @POST("authority/integral/exchange")
//    Observable<ResultInfo<Boolean>> jiFenExchange(@Body JiFenVo pageReq);

    @Streaming
    @GET
    Call<ResponseBody> download(@Url String url);

    /**
     * 我的》统计数据
     */
    @GET("partyTask/getMyWorkCount")
    Observable<ResultInfo<MineCountBean>> getMineViewData();

    // 任务》我的任务列表
    @POST("partyTask/pageMyTaskList")
    Observable<ResultInfo<AppPageData<TaskBean>>> getTaskPageListForMeData(@Body PageReq<CommVo> pageReq);

    // 任务》任务列表
    @POST("partyTask/pageOnlineTaskList")
    Observable<ResultInfo<AppPageData<TaskBean>>> getTaskPageListForAllData(@Body PageReq<CommVo> pageReq);

    /**
     * 加载任务详情
     */
    @GET("partyTask/{id}")
    Observable<ResultInfo<TaskDetailEntity>> loadTaskDetail(@Path("id") String id);

    /**
     * 上传任务进度
     */
    @POST("partyTaskFlow")
    Observable<ResultInfo<TaskRateEntity>> uploadTaskRate(@Body TaskRateEntity taskRateEntity);

    /**
     * 提交任务审核
     */
    @POST("partyTask/saveAudit")
    Observable<ResultInfo<String>> submitTaskCheck(@Body PartyTaskVo vo);

    /**
     * 加载任务进度详情
     */
    @GET("partyTaskFlow/{id}")
    Observable<ResultInfo<TaskRateEntity>> loadRateDetail(@Path("id") String id);

    // 我的》我的积分列表
    @POST("integralDetailed/pageIntegralDetailedList")
    Observable<ResultInfo<AppPageData<JiFenBean>>> getJiFenPageListForMeData(@Body PageReq<CommVo> pageReq);

    // 我的》我的考试
    @POST("examinationSign/pageAppMyExamList")
    Observable<ResultInfo<AppPageData<ExamineBean>>> getExamineListData(@Body PageReq<CommVo> pageReq);

    // 考试》报名
    @POST("examinationTest/updateUserSign")
    Observable<ResultInfo<ExamineSignBean>> examineSignUp(@Body ExamineVo vo);

    // 考试》提交考试答题答案
    @POST("examinationTest/submitAnswer")
    Observable<ResultInfo<String>> submitExamineAnswer(@Body ExamineSubmitVo vo);

    // 云课堂》新增学习进度
    @POST("learningRecord/saveOrUpdate")
    Observable<ResultInfo<StudyRecordBean>> saveOrUpdateStudyRecord(@Body StudyRecordVo vo);

    // 随手拍》提交
    @POST("shotQuestion/save")
    Observable<ResultInfo<FreePhotosBean>> submitFreePhotos(@Body FreePhotosVo vo);

    // 随手拍》查询分页
    @POST("shotQuestion/pageAppMyShotList")
    Observable<ResultInfo<AppPageData<FreePhotosBean>>> getFreePhotosPageListData(@Body PageReq<FreePhotosVo> pageReq);

    // 随手拍》查询详情
    @GET("shotQuestion/getById")
    Observable<ResultInfo<FreePhotosBean>> getFreePhotosDetailById(@Query("id") String id);

    // 随手拍》处理新增
    @POST("shotQuestion/updateTask")
    Observable<ResultInfo<Boolean>> submitDealWithFreePhotos(@Body FreePhotosVo vo);

    // 组织生活》查询分页
    @POST("orgLife/pageAppOrgLifeList")
    Observable<ResultInfo<AppPageData<PartyLifeBean>>> getPartyLifePageData(@Body PageReq<PartyLifeVo> pageReq);

    // 组织生活》查询详情
    @GET("orgLife/get")
    Observable<ResultInfo<PartyLifeBean>> getPartyLifeDetailById(@Query("id") String id);

    // 组织生活》新增
    @POST("orgLife/insertOrgLife")
    Observable<ResultInfo<PartyLifeBean>> addPartyLife(@Body PartyLifeVo vo);

    // 组织生活 》 组织生活资料上传提醒
    @POST("notice/pageAppOrgLifeNoticeList ")
    Observable<ResultInfo<AppPageData<MsgEntity>>> getPartyLifeNoticeList(@Body PageReq<MsgVo> pageReq);

    // 机构组织》更新村镇社区信息
    @POST("township/updateTownLocation")
    Observable<ResultInfo<String>> updateTownInfo(@Body TownshipVo vo);

    @GET("djVercode/save")
    Observable<ResultInfo<String>> getPhoneCode(@Query("mobile") String phone, @Query("sendType") String busType);

    // 忘记密码》修改密码
    @GET("login/updatePwdByCode")
    Observable<ResultInfo<String>> updatePasswordForForget(@Query("phone") String phone, @Query("code") String code, @Query("password") String password);

    @GET("learningRecord/getClassHours")
    Observable<ResultInfo<String>> getLearningRecordClassHours();

    @GET("schoolClasses/getMyClassList")
    Observable<ResultInfo<List<ExamineClassEntity>>> getMyClassList();

    @GET("schoolClasses/getJoinClassList")
    Observable<ResultInfo<List<ExamineClassEntity>>> getJoinClassList();

    @GET("examinationTest/getWzExaminationList")
    Observable<ResultInfo<List<ExamineBean>>> getWzExaminationList(@Query("classId") String classId);

    // 班级》班级成员
    @POST("schoolUser/page")
    Observable<ResultInfo<AppPageData<ExamineClassMemberEntity>>> getExamineClassMemberPage(@Body PageReq<ExamineClassVO> pageReq);

    // 班级》入班审核
    @GET("schoolUser/getAuditList")
    Observable<ResultInfo<List<ExamineClassMemberEntity>>> schoolUserGetAuditList(@Query("classId") String classId);

    @POST("schoolAttendance/save")
    Observable<ResultInfo<AttendanceEntity>> doAttendance(@Body AttendanceVO vo);

    @GET("schoolAttendance/get")
    Observable<ResultInfo<List<AttendanceEntity>>> getSchoolAttendanceList(@Query("classId") String classId);

    @POST("schoolAttendance/getPageList")
    Observable<ResultInfo<AppPageData<AttendanceEntity>>> getExamineClassesAttendanceListForAll(@Body PageReq<ExamineClassVO> pageReq);

    // 班级》加入
    @POST("schoolUser/save")
    Observable<ResultInfo<String>> examineClassJoin(@Body ExamineClassJoinVO vo);

    // 班级》列表方式加入
    @POST("schoolUser/updateJoinClass")
    Observable<ResultInfo<String>> updateJoinClass(@Body ExamineClassJoinVO vo);

    // 班级》加入考试
    @POST("examinationResult/insertStartExam")
    Observable<ResultInfo<String>> insertStartExam(@Body ExamineClassJoinVO vo);

    @GET("schoolTeacher/getCourseTeacherList")
    Observable<ResultInfo<List<CourseTeacherEntity>>> getCourseTeacherList(@Query("classId") String classId);

    @POST("schoolCourse/pageList")
    Observable<ResultInfo<AppPageData<ExamineClassCourseEntity>>> getSchoolCoursePage(@Body PageReq<ExamineClassVO> pageReq);

    @GET("schoolTeacherEval/getTeacherEval")
    Observable<ResultInfo<TeacherRankEntity>> getTeacherEval(@Query("classId") String classId, @Query("userId") String userId, @Query("courseId") String courseId);

    // 班级》新增党校教师评价
    @POST("schoolTeacherEval/save")
    Observable<ResultInfo<TeacherRankEntity>> schoolTeacherEvalSave(@Body TeacherRankVO vo);

    @GET("schoolCourse/getCourseList")
    Observable<ResultInfo<List<ExamineAttendanceCourseEntity>>> getSchoolCourseCourseList(@Query("classId") String classId);

    @GET("schoolClasses/get")
    Observable<ResultInfo<ExamineClassEntity>> getSchoolClassesInfo(@Query("id") String id);

    // 干部考试》模拟考试》列表
    @GET("examinationTest/getSimulationExamList")
    Observable<ResultInfo<ArrayList<ExamineBean>>> getSimulationExamList();

    // 干部考试》模拟考试》成绩
    @GET("examinationTest/getSimExamScore")
    Observable<ResultInfo<ArrayList<ExamineBean>>> getSimExamScore();

    // 干部考试》正式考试》列表
    @GET("examinationTest/getFormalExamList")
    Observable<ResultInfo<ArrayList<ExamineBean>>> getFormalExamList();

    // 干部考试》正式考试》成绩
    @GET("examinationTest/getFormalExamScore")
    Observable<ResultInfo<ArrayList<ExamineBean>>> getFormalExamScore();

    // 干部考试》加入
    @POST("schoolUser/insertExamUser")
    Observable<ResultInfo<String>> insertExamUser(@Body ExamineGanBuRegisterVO vo);

    // 项目评估》根据班级id-查询项目评估
    @GET("schoolTeacherEval/getXmEval")
    Observable<ResultInfo<SchoolXmEval>> schoolTeacherEvalGetXmEval(@Query("classId") String classId);

    // 项目评估》新增项目评估
    @POST("schoolTeacherEval/saveXmEval")
    Observable<ResultInfo<SchoolXmEval>> schoolTeacherEvalSaveXmEval(@Body SchoolXmEval vo);

    // 项目评估》根据班级id-查询办学评估
    @GET("schoolTeacherEval/getBxEval")
    Observable<ResultInfo<SchoolBxEval>> schoolTeacherEvalGetBxEval(@Query("classId") String classId);

    // 项目评估》新增办学评估
    @POST("schoolTeacherEval/saveBxEval")
    Observable<ResultInfo<SchoolBxEval>> schoolTeacherEvalSaveBxEval(@Body SchoolBxEval vo);

    // 课程》成绩查询
    @GET("examinationTest/getDxksExamScore")
    Observable<ResultInfo<ArrayList<ExamineBean>>> getClassExamineHistoryList();

    // 课程》入班审批
    @POST("schoolUser/updateUserAudit")
    Observable<ResultInfo<String>> submitClassMemberCheck(@Body ExamineClassMemberCheckVo vo);

    // 文章 》 今日动态>>
    @POST("post/getAllNewsList")
    Observable<ResultInfo<AppPageData<ArticleEntity>>> getAllNewsList(@Body PageReq<ArticleVo> pageReq);

    // 用户》更新详细
    @GET("system/common/updateUserInfo")
    Observable<ResultInfo<String>> updateUserInfo(@Query("userName") String userName);
}
